msg_tool\scripts\kirikiri\archive\xp3pack/
reader.rs1use adler::Adler32;
2use std::io::{PipeReader, Read};
3
4pub struct Reader {
5 inner: PipeReader,
6 adler: Adler32,
7}
8
9impl Reader {
10 pub fn new(inner: PipeReader) -> Self {
11 Self {
12 inner,
13 adler: Adler32::new(),
14 }
15 }
16
17 pub fn into_checksum(self) -> u32 {
18 self.adler.checksum()
19 }
20}
21
22impl Read for Reader {
23 fn read(&mut self, buf: &mut [u8]) -> std::io::Result<usize> {
24 let n = self.inner.read(buf)?;
25 self.adler.write_slice(&buf[..n]);
26 Ok(n)
27 }
28}